#include "Singleton.hpp"

void Test1()
{
  // 注意：类中静态成员变量的初始化不能在函数中s完成
  // Singletion Singletion::m_instance;
  Singleton* ptr1 = Singleton::GetInstance();
  Singleton* ptr2 = Singleton::GetInstance();
  fprintf(stdout, "ptr1: %p, ptr2: %p\n", ptr1, ptr2);
}

void Test2()
{
  Singleton* ptr3 = Singleton::GetInstance();
  // Singleton* ptr4 = new Singleton(); 
  // Singleton obj1 = *ptr3;
  // Singleton obj2 = obj1;
  // 缺点：通过打印地址我们可以看到，拷贝构造函数还是可以用的
  // fprintf(stdout, "&obj1: %p, &obj2: %p\n", &obj1, &obj2);
  // 需要禁掉拷贝构造函数
}

int main()
{
  Test1();
  Test2();
  return 0;
}
